网站建设 名词解释,wordpress百万级,初中生做网站挣钱,互联网怎么做网站c基础
2.1名字空间
namespace 防止命名冲突 说明#xff1a;名字空间可以在全局作用域或其他作用域#xff08;另一个名字空间#xff09;内部定义#xff0c;但不能在函数或类的内部定义。
使用#xff1a;
#includeiostream
using namespace std; //std中包…c基础
2.1名字空间
namespace 防止命名冲突 说明名字空间可以在全局作用域或其他作用域另一个名字空间内部定义但不能在函数或类的内部定义。
使用
#includeiostream
using namespace std; //std中包含关键字cin,cout等
namespace spaceA{int x;int y;
}
int main()
{spaceA::x 8; //1.名字空间名称::局部内容名称coutspaceA::xendl;spaceA::y 9; coutspaceA::yendl;// 2.using namespace 名字空间名称using namespace spaceA;x 8;y 9;coutxy;// 3.using spaceBusing spaceA::x;x4;coutx;return 0;
}
2.2数据类型
基本数据类型整型实型字符型布尔型无值型
非基本数据类型复合数据类型构造数据类型 2.3 new和delete
指针变量的定义 注意ip 是指针变量 *ip是解引用不要和int *ip 弄混
int num ;
int *ip num; //定义一个整型指针变量
*ip 4; //解引用
// 解引用操作仅适用于那些确实指向了某个对象的有效指针 为什么指针变量在定义时要说明其类型 指针变量保存的是地址 如一个整型指针变量是4个字节要访问内存时要将4个字节全部读出来时才有意义。 new delete new 内存分配 delete 释放new分配的存储空间 #includeiostream
using namespace std;
int main(){int *p;p new int; //申请一个整型空间*p 7;cout*pendl;delete p; return 0;
} 注意定义和使用指针变量的方法 2.4引用 2.5函数 2.6参数传递
1.传值参数 当初始化一个非引用类型的变量时初始值被拷贝给变量此时变量的改动不会影响初始值。 当执行指针拷贝操作时拷贝的是指针的值。拷贝之后两个指针是不同的指针。
2.传引用参数 通过使用引用形参允许函数改变一个或多个实参的值。引用形参绑定初始化它的对象
2.7内联函数 调用函数一般比求等价表达式的值要慢一些。在大多数机器上一次函数调用包含这一系类的工作: 调用前要保存寄存器并在返回时恢复可能需要拷贝实参程序转换到另一个位置继续执行。
2.8重载函数 2.9异常处理 try throw catch .... 类与对象
3.1类
类是具有相同属性和方法的一类对象集合的抽象
定义类就是对问题抽象和封装的过程。
类的定义 关键在类体外定义成员函数 3.2对象
对象是类的实例或实体 对象成员的访问 point *point_p1;
point_p1 p1;
//定义一个指针并且赋予指针意义指向p1的地址
point_p1-set(1,2); //使用指针访问成员变量
p1.show();
(*point_p1).set(2,3); //使用对象访问成员
(p1)-show() 3.3类的界面和实现
point.h point.cpp 分开实现
//point.cpp
#includeiostream
#include point.h
using namespace std;
void point::set1(int a,int b)
{x a;y b;
}
void point::show()
{coutxyendl;
}
//point.h
class point
{
private:int x,y;
public:void set1(int a,int b);void show();
};
//main.cpp
#includeiostream
#include point.h
using namespace std;
int main(){point p1;p1.set1(1,1);p1.show();return 0;
}
3.3.1构造函数
构造函数是一种特殊的成员函数对象的创建和初始化由它来完成。 1.构造函数不能是私有的 2.构造函数可以重载可以带一个参数也可以不带参数。 3.3.2成员初始化列表 冒号后面就是成员初始化表可以使用引用 3.3.3具有默认参数的构造函数 3.3.4析构函数重点
特点释放对象回收空间
自动被调用 析构函数自动被调用 3.3.5拷贝构造函数
定义 特点 3.3.6浅拷贝和深拷贝 能满足已知对象去初始化未知对象用默认的拷贝构造函数可以实现浅拷贝 如果一个类中含有指针类型的变量浅拷贝会出现错误 需要自己写拷贝构造函数。这种拷贝就是深拷贝。 #includeiostream
#includecstring
using namespace std;
class String
{char *buf; //用来存放字符串的int length;//表示字符串的长度
public:String() //不带参数的构造函数创建一个空串{length 0; //串长为0buf new char; buf[0] \0;//字符串的结束符}String(char *s) //用字符串初始化{lengthstrlen(s);buf new char[length1];//开辟空间对一个空间放\0字符串的结束符strcpy(buf,s);}//拷贝构造函数String(const String s){length s.length;//buf s.buf; 错误的方法buf new char[length1];strcpy(buf,s.buf);cout我是默认拷贝构造函数,深拷贝endl;}~String() //析构函数回收空间{delete[] buf;}void show(){coutbufendl;}
};
int main()
{String s1((char *)helloworld!); //需要强制类型转换一下s1.show();String s2 s1; //拷贝一下s2.show();return 0;
}拷贝成功 3.4this指针 用途: ①区分成员和非成员 上面的方式是不对的正确的赋值方式 ② 类的方法需要返回当前对象的引用 3.5向函数传递对象 3.6类的静态成员 #includeiostream
using namespace std;
class student{public:static int count;static double total;student(double score){this-score score;count;totalscore;}static double getAverage(){return total/count;}private:double score;
};
int student::count 0;
double student::total 0; //初始化成员int main()
{student s1(70),s2(90);couts1.getAverage()endl; //通过对象去访问coutstudent::getAverage()endl; // 通过类名访问static 类里面的静态全局变量return 0;
}
3.7类的友元 //一个类的成员函数作为另一个类的友元使用
#includeiostream
using namespace std;
class girl; //声明一下
class boy
{string name;public:boy(string nm){name nm;}void introduce(){couti am nameendl;}void introducefriend(girl x);
};
class girl
{string name;public:girl(string nm){name nm;}void introduce(){couti amnameendl;}friend void boy::introducefriend(girl x);//声明boy的成员函数introducefriend是girl的友元函数
};
void boy::introducefriend(girl x)
{coutshe is x.nameendl;
}
int main()
{boy boy1(tom);girl girl1(alice);boy1.introduce();boy1.introducefriend(girl1);return 0;
}
3.8对象成员
一个类的对象是另一个类的数据成员
A的对象a是B的数据成员。 3.9const