-
^異或:參與運(yùn)算的兩個二進(jìn)制相同則為0.否則為1.
~取反
<<左移 >>右移
查看全部 -
。
查看全部 -
? ? ? ? ? ?
Staff(const?Staff?&?staff);賦值構(gòu)造函數(shù)
? ? ? ?
查看全部 -
memcpy函數(shù)。用法:(目標(biāo)地址,源地址,數(shù)據(jù)長度)
數(shù)據(jù)長度的單位是字節(jié)。(1 byte = 8 bit)
c++中需要調(diào)用<cstring>庫
查看全部 -
指針的運(yùn)算。
查看全部 -
指針加減法實(shí)際不是操作指針本身,而是通過指針存儲的地址+指針類型大小,得出需要被操作的新內(nèi)存地址查看全部
-
浮點(diǎn)數(shù)類型float。運(yùn)算過程復(fù)雜,且精度不高,不能存放較大的數(shù)字。
查看全部 -
std::string?是 C++ 中用來存放字符串的類型
查看全部 -
1
查看全部 -
函數(shù)指針的聲明方法為:
返回值類型 ( *?指針變量名) ([形參列表]);
注1:“返回值類型”說明函數(shù)的返回類型,“(指針變量名 )”中的括號不能省,括號改變了運(yùn)算符的優(yōu)先級。若省略整體則成為一個函數(shù)說明,說明了一個返回的數(shù)據(jù)類型是指針的函數(shù),后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。例如:
int func(int x); /* 聲明一個函數(shù) */
int (*f) (int x); /* 聲明一個函數(shù)指針 */
f=func; /* 將func函數(shù)的首地址賦給指針f */
或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:
f = &func;
查看全部 -
普通變量使用.
指針變量使用->
查看全部 -
筆記測試一下筆記測試一下筆記查看全部
-
#include<iostream>
using namespace std;
class Mat {
friend ostream& operator << (ostream& out, const Mat& m);
public:
int row = 0;
int col = 0;
float * * mat = nullptr;
private:
void init(int row, int col)
{
if (row && col) {
mat = new float*[row];
for (int i = 0; i < row; i++) {
mat[i] = new float[col];
for (int j = 0; j < col; j++){
mat[i][j] = 0;
if(i == j){
mat[i][j] = 2;
}
}
}
}
}
public:
Mat(int row = 0, int col = 0)
{
this->row = row;
this->col = col;
init(row, col);
}
Mat(const Mat &m)
{
this->row = m.row;
this->col = m.col;
init(row, col);
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
mat[i][j] = m.mat[i][j];
}
}
}
~Mat()
{
if (mat != nullptr) {
for (int i = 0; i < row; i++){
if (mat[i]) {
delete[] mat[i];
mat[i] = nullptr;
}
}
if (mat){
delete[] mat;
}
mat = nullptr;
}
}
Mat & operator = (const Mat &m)
{
if (mat != nullptr) {
for (int i = 0; i < row; i++){
if (mat[i]) {
delete[] mat[i];
mat[i] = nullptr;
}
}
if (mat){
delete[] mat;
}
mat = nullptr;
}
row = m.row;
col = m.col;
init(row, col);
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
mat[i][j] = m.mat[i][j];
}
}
return *this;
}
Mat operator * (const Mat &m)
{
Mat res(row, m.col);
for (int i = 0; i < res.row; i++) {
for (int j = 0; j < res.col; j++) {
res.mat[i][j] = 0.0f;
}
}
if (m.row != col){
}
else {
for (int i = 0; i < res.row; i++) {
for (int j = 0; j < res.col; j++) {
for (int k = 0; k < res.row; k++) {
res.mat[i][j] += mat[i][k] * m.mat[k][j];
}
}
}
}
return res;
}
};
ostream& operator << (ostream& out, const Mat& m)
{
for(int i = 0; i < m.row; i ++) {
for(int j = 0; j < m.col; j ++) {
cout << m.mat[i][j] << ' ';
}
cout << endl;
}
return out;
}
int main()
{
Mat ma(3, 3);
Mat mb(3, 3);
Mat res = ma * mb;
cout << res << endl;
return 0;
}
查看全部 -
從函數(shù)中取出一個對象
理解:函數(shù)的返回值是一個對象啊
通過把返回值寫在參數(shù)里面,怎么實(shí)現(xiàn)返回的是對象呢?
查看全部 -
向函數(shù)中傳遞一個對象:
若是直接在函數(shù)的參數(shù)列表中傳遞對象,那么這個傳遞到函數(shù)內(nèi)部的對象僅僅是副本,造成資源浪費(fèi)。
所以,一般選擇使用指針或者引用作為函數(shù)列表中的對象引用
使用指針作為函數(shù)列表的參數(shù)時,為了增加健壯性還需要對指針進(jìn)行判空操作。
因此可以選擇使用引用傳遞對象
而且,可以使用const修飾來增加對象的存在周期,且指向不可修改。
查看全部
舉報(bào)