创建类并引用
学C++也有段时间了,居然不会创建一个完整的类并引用,这怎么行,我研究了不少大佬的资料,自己做个总结,以后忘记了好再看。
首先在vs中先创建一个类文件 右击项目添加类 会生成.cpp文件和.h文件(也就是头文件)
首先打开头文件: 在其中写入以下内容(仅仅作为示范,内容视情况)
#pragma once
#include<string>
using std::string;
class liulng
{
private:
int a = 0;
string s = { "abcde" };
int b = 0;
int c = 0;
public:
int sum();
void print();
void setvalue(int c, int d);
private:
int ride();
};
个人理解为私有成员只能通过类内可访问,类外不可访问。友元可访问(类的友元函数是指在类定义的一个普通函数,不是类的成员函数,但是它可以自由地访问类中的私有数据成员)。公有成员类内和类外都可访问。保护的话如果不涉及继承,和私有成员没什么区别,涉及继承的话就太繁杂了,今天不讲(类的特性,封装、继承、多态,我自己现在还不是很清楚,等搞清楚了在写文章记下来)。 然后在cpp文件中实现类中的成员函数:
#include "ClassTest.h"
#include<cstdio>
#include<iostream>
#include <string>
using namespace std;
void liulng::setvalue(int c, int d)
{
this->a = c;
this->b = d;
this->c = ride();
}
int liulng::sum()
{
return a + b;
}
int liulng::ride()
{
return a * b;
}
void liulng::print()
{
cout << s << endl;
cout << c << endl;
}
实现没什么讲的,最基础的加法和乘法。 最后调用,在要调用的cpp文件引用。
#include"headtest.h"
#include "ClassTest.h"
#include<iostream>
using namespace std;
void class_run()
{
liulng *a = new liulng();
a ->setvalue(3, 4);
int m = 0;
m = a->sum();
a->print();
cout << m << endl;
}
int main()
{
class_run();
return 0;
成功输出 后续: 至于为什么类的定义与实现要分开写,还是为了让多个文件使用此头文件,又不引发链接的“multiple definition”,中的来说代码的复用率变高了。而且我记得在C++中,如果函数的声明和调用写在一起会被视为内联函数,指当编译器运行到改函数位置时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置(这样做的好处是省去了调用的过程,加快程序运行速度)。但由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的代码,所以程序的体积将增大,内联函数的本质是,节省时间但是消耗空间。在写一些复杂的项目的时候不值得。 ok,就到这。2021.12.16日记。
|