class Base
{
}
1.this的使用(port是类成员变量)
Server_init::Server_init(int port)
{
this->port = port;
//(*this).port = port;
}
2.C++内置类型
内置类型是编程语言自己定义的一些类型
在C++中内置类型有:
整型:
①整数 int、short和long
②字符型 char和wchar_t
③布尔型 bool
整型可用修饰:unsigned
浮点:
float、double和long double
3.多态性基础的学习
//Server_init.h
class Server_init
{
public:
Server_init() = default;
Server_init(int port);
~Server_init();
int get_port(){ return port; }; //返回端口号
void set_port(int port);//设置端口号
public:
virtual void println();//虚函数
void myself();
};
//Server_base.h
class Server_base :
public Server_init
{
public:
Server_base();
~Server_base();
void println();
void myself();
};
//测试代码:
//创建基类
Server_init *server = new Server_init();
server->println();//虚函数
server->myself(); //成员函数
cout <<endl;
//创建派生类
Server_base *server_base = new Server_base();
server_base->println();
server_base->myself();
cout << endl;
//指针隐式转换
server = server_base;
server->println();//动态绑定,实现多态性
server->myself();
cout << endl;
server_base = nullptr;//没有此语句,后面delete会出错
//释放内存
delete server;
server = nullptr;
delete server_base;
server_base = nullptr;
//对象形式
Server_init server_init;
server_init.println();
cout << endl;
Server_base server_base1;
server_base1.println();
cout << endl;
//对象之间没有隐式转换,也没有动态与静态类型之区别
server_init = server_base1;
server_init.println();
运行结果:
4.防止重复编译
方式一:
#ifndef _SOMEFILE_H_
#define _SOMEFILE_H_
.......... // 一些声明语句
#endif
方式二:
#pragma once
... ... // 一些声明语句
5.重载是相对于同一作用域而言的,派生类的作用域嵌套在基类的作用域之内。声明在内层作用域的函数并不会重载声明在外层作用域中的函数。
即是派生类成员与基类成员的形参列表不一致,若函数名相同,基类成员仍然会被隐藏掉。
class Base
{
void a();
};
class Extend : Base
{
void a(int m);
};
Base base; Extend extend;
base.a();//正确
extend.a();//错误
extend.a(100);//正确
extend.Base::a();//正确