天天看点

动态内存 this指针

#include <iostream>
#include <string>

class Company
{
public:
    Company(std::string theName);
    virtual void printInfo();

protected:
    std::string name;
};

class TechCompany : public Company
{
public:
    TechCompany(std::string theName, std::string product);
    virtual void printInfo();
private:
    std::string product;
};

Company::Company(std::string theName)
{
    name = theName;
};

void Company::printInfo()
{
    std::cout << "this company's name is " << name << std::endl;
};      
//TechCompany::TechCompany(std::string theName, std::string theproduct) : Company(theName)      
//{      
//  product = theproduct;      
//{      
TechCompany::TechCompany(std::string theName, std::string product) : Company(theName)
{
    this->product = product; // this指针:指向当前的类生成的对象的指针,所以就可以用 -> 区分属性 和 函数参数值了。如果不存在二义性,就不必使用this。
};

void TechCompany::printInfo()
{
    std::cout << "this company's name is " << name << " his product is " << product << std::endl;
}

int main()
{
    Company *company = new Company("Apple");
    company->printInfo();

    delete company;
    company = NULL;

    company = new TechCompany("Apple", "Iphone");
    company->printInfo();

    delete company;
    company = NULL;

}
/* vim: set ts=4 sw=4 sts=4 tw=100 */