下面給大家介紹下C++軟件的學習小結,希望可以幫到您哦!
(4)對于類的成員函數(shù),若指定其為const類型,則表明其是一個常函數(shù),不能修改類的成員變量;
(5)對于類的成員函數(shù),有時候必須指定其返回值為const類型,以使得其返回值不為“左值”。
一個基類及其繼承類的實現(xiàn):
class Base
{
public:
Base(const char *s=NULL);
Base(const Base& rth);
Base & operator=(const Base & oth);
virtual ~Base();
private:
char *m_data;
};
Base::Base(const char* s)
{
if(s==NULL)
{
m_data=new char[1];
m_data[0]='\0';
}
else
{
int length=strlen(s);
m_data=new char[length+1];
strcpy(m_data,s);
}
}
Base::Base(const Base & oth)
{
int len=strlen(oth.m_data);
m_data=new char[len+1];
strcpy(m_data,oth.m_data);
}
Base & Base::operator=(const Base & oth)
{
if(this==&oth) return *this;
delete []m_data;
int len=strlen(oth.m_data);
m_data=new char[len+1];
strcpy(m_data,oth.m_data);
return *this;
}
Base::~Base()
{
delete[] m_data;
}
class Derived : public Base
{
public:
Derived(const char* s=NULL,int a=0);
Derived(const Derived& oth);
Derived& operator=(const Derived& oth);
private:
int m;
};
Derived::Derived(const char* s,int a):Base(s),m(a){ }
Derived::Derived(const Derived& oth):Base(oth),m(oth.m){ }
Derived& Derived::operator=(const Derived& oth)
{
if(this==&oth) return *this;
Base::operator=(oth);
m=oth.m;
return *this;
}
C++編譯器不支持模板頭文件和實現(xiàn)代碼分離的編譯
在分離式編譯的環(huán)境下,編譯器編譯某一個.cpp文件時并不知道另一個.cpp文件的存在,也不會去查找(當遇到未決符號時它會寄希望于連接器)。這種模式在沒有模板的情況下運行良好,但遇到模板時就不行,因為模板僅在需要的時候才會具現(xiàn)化出來,所以,當編譯器只看到模板的聲明時,它不能具現(xiàn)化該模板,只能創(chuàng)建一個具有外部連接的符號并期待連接器能夠將符號的地址決議出來。然而當實現(xiàn)該模板的.cpp文件中沒有用到模板的具現(xiàn)體時,編譯器懶得去具現(xiàn),所以,整個工程的.obj中就找不到一行模板具現(xiàn)體的二進制代碼,于是連接器也傻了!
2021-07-09
2021-07-08
2021-07-08
2021-07-08
2021-07-08
2021-07-08
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-06
2021-07-06
2021-07-06
工作態(tài)度怎么寫 具有穩(wěn)定的工作心態(tài)
2021-07-06
該文觀點僅代表作者本人,查查吧平臺系信息發(fā)布平臺,僅提供信息存儲空間服務,不承擔相關法律責任。圖片涉及侵權行為,請發(fā)送郵件至85868317@qq.com舉報,一經查實,本站將立刻刪除。